{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "from collections import Counter\n",
    "import Levenshtein"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# define the name of headers\n",
    "col_name = ['age','workclass','fnlwgt','education','education-num','marital-status','occupation','relationship','race','sex','capital-gain','capital-loss','hours-per-week','native-country','salary']\n",
    "# read data from csv file\n",
    "data = pd.read_csv('dataset1_dirty.csv',header=None,names = col_name)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>age</th>\n",
       "      <th>workclass</th>\n",
       "      <th>fnlwgt</th>\n",
       "      <th>education</th>\n",
       "      <th>education-num</th>\n",
       "      <th>marital-status</th>\n",
       "      <th>occupation</th>\n",
       "      <th>relationship</th>\n",
       "      <th>race</th>\n",
       "      <th>sex</th>\n",
       "      <th>capital-gain</th>\n",
       "      <th>capital-loss</th>\n",
       "      <th>hours-per-week</th>\n",
       "      <th>native-country</th>\n",
       "      <th>salary</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>39</td>\n",
       "      <td>State gov</td>\n",
       "      <td>77516</td>\n",
       "      <td>Bachelors</td>\n",
       "      <td>13</td>\n",
       "      <td>Never-married</td>\n",
       "      <td>dmclrical</td>\n",
       "      <td>Not-in-family</td>\n",
       "      <td>White</td>\n",
       "      <td>Male</td>\n",
       "      <td>2174</td>\n",
       "      <td>0</td>\n",
       "      <td>40</td>\n",
       "      <td>United-States</td>\n",
       "      <td>&lt;=50K</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>50</td>\n",
       "      <td>Self-emp-not-inc</td>\n",
       "      <td>83311</td>\n",
       "      <td>Bachelors</td>\n",
       "      <td>13</td>\n",
       "      <td>Married-civ-spouse</td>\n",
       "      <td>Exec-managerial</td>\n",
       "      <td>Husband</td>\n",
       "      <td>White</td>\n",
       "      <td>Male</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>13</td>\n",
       "      <td>United-States</td>\n",
       "      <td>&lt;=50K</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>38</td>\n",
       "      <td>Private</td>\n",
       "      <td>215646</td>\n",
       "      <td>HS-grad</td>\n",
       "      <td>9</td>\n",
       "      <td>Divorced</td>\n",
       "      <td>Handlers-cleaners</td>\n",
       "      <td>Not-in-family</td>\n",
       "      <td>White</td>\n",
       "      <td>Male</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>40</td>\n",
       "      <td>United-States</td>\n",
       "      <td>&lt;=50K</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>53</td>\n",
       "      <td>Private</td>\n",
       "      <td>234721</td>\n",
       "      <td>11th</td>\n",
       "      <td>7</td>\n",
       "      <td>Married-civ-spouse</td>\n",
       "      <td>Handlers-cleaners</td>\n",
       "      <td>Husband</td>\n",
       "      <td>Black</td>\n",
       "      <td>Male</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>40</td>\n",
       "      <td>United-States</td>\n",
       "      <td>&lt;=50K</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>28</td>\n",
       "      <td>Private</td>\n",
       "      <td>338409</td>\n",
       "      <td>Bachelors</td>\n",
       "      <td>13</td>\n",
       "      <td>Married-civ-spouse</td>\n",
       "      <td>Prof-specialty</td>\n",
       "      <td>Wife</td>\n",
       "      <td>Black</td>\n",
       "      <td>Female</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>40</td>\n",
       "      <td>Cuba</td>\n",
       "      <td>&lt;=50K</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   age         workclass  fnlwgt  education  education-num  \\\n",
       "0   39         State gov   77516  Bachelors             13   \n",
       "1   50  Self-emp-not-inc   83311  Bachelors             13   \n",
       "2   38           Private  215646    HS-grad              9   \n",
       "3   53           Private  234721       11th              7   \n",
       "4   28           Private  338409  Bachelors             13   \n",
       "\n",
       "       marital-status         occupation   relationship   race     sex  \\\n",
       "0       Never-married          dmclrical  Not-in-family  White    Male   \n",
       "1  Married-civ-spouse    Exec-managerial        Husband  White    Male   \n",
       "2            Divorced  Handlers-cleaners  Not-in-family  White    Male   \n",
       "3  Married-civ-spouse  Handlers-cleaners        Husband  Black    Male   \n",
       "4  Married-civ-spouse     Prof-specialty           Wife  Black  Female   \n",
       "\n",
       "   capital-gain  capital-loss  hours-per-week native-country salary  \n",
       "0          2174             0              40  United-States  <=50K  \n",
       "1             0             0              13  United-States  <=50K  \n",
       "2             0             0              40  United-States  <=50K  \n",
       "3             0             0              40  United-States  <=50K  \n",
       "4             0             0              40           Cuba  <=50K  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "rows: 30162\n",
      "age: min:-76, mean:36.49393276307937, max:90, std:17.390693604530956\n",
      "workclass : 77\n",
      "  State gov: 85\n",
      "  Self-emp-not-inc: 1331\n",
      "  Private: 19734\n",
      "  private: 2099\n",
      "  Federal-gov: 697\n",
      "  Local-gov: 1534\n",
      "  stategov: 12\n",
      "  ?: 614\n",
      "  federalgov: 13\n",
      "  State-gov: 957\n",
      "  Self-emp-inc: 692\n",
      "  Self-emp inc: 60\n",
      "  Self emp-not-inc: 110\n",
      "  local-gov: 193\n",
      "  Selfemp-not-inc: 129\n",
      "  state-gov: 112\n",
      "  local gov: 15\n",
      "  Self-empinc: 74\n",
      "  Self emp-inc: 61\n",
      "  Self-emp-not inc: 109\n",
      "  Self-emp-notinc: 134\n",
      "  Self-emp not-inc: 105\n",
      "  Localgov: 136\n",
      "  Federalgov: 72\n",
      "  self-empinc: 14\n",
      "  Selfemp-nc: 2\n",
      "  self-emp not-inc: 12\n",
      "  self-emp-inc: 67\n",
      "  Self emp-notinc: 10\n",
      "  self-emp-not-inc: 151\n",
      "  self emp-inc: 3\n",
      "  Self-empnot-nc: 12\n",
      "  self-emp inc: 9\n",
      "  Self-empnot- nc: 11\n",
      "  Self-emp not inc: 12\n",
      "  Local gov: 122\n",
      "  Stategov: 83\n",
      "  Self-empnot-inc: 133\n",
      "  Selfemp-not- nc: 21\n",
      "  self empinc: 1\n",
      "  Self emp inc: 5\n",
      "  Federal gov: 65\n",
      "  Selfemp- ot-inc: 10\n",
      "  Self emp-not inc: 7\n",
      "  federal-gov: 71\n",
      "  Selfemp-not-nc: 14\n",
      "  self-empnot-inc: 18\n",
      "  selfemp-not-inc: 14\n",
      "  selfemp-inc: 6\n",
      "  self-emp-notinc: 13\n",
      "  Without-pay: 11\n",
      "  Selfemp-inc: 42\n",
      "  Self emp not inc: 1\n",
      "  self-emp-not inc: 21\n",
      "  Self emp not-inc: 12\n",
      "  localgov: 19\n",
      "  selfemp-ot-inc: 1\n",
      "  Self empnot-inc: 9\n",
      "  Self-emp notinc: 13\n",
      "  self emp-not-inc: 14\n",
      "  federal gov: 5\n",
      "  self-empnot-nc: 1\n",
      "  Self empinc: 9\n",
      "  state gov: 6\n",
      "  Selfemp- nc: 6\n",
      "  selfemp-not- nc: 3\n",
      "  selfemp-not-nc: 2\n",
      "  Selfemp-ot-inc: 10\n",
      "  without pay: 1\n",
      "  Selfemp- ot- nc: 1\n",
      "  self-emp not inc: 2\n",
      "  selfemp- ot-inc: 1\n",
      "  Without pay: 2\n",
      "  Self empnot- nc: 2\n",
      "  self empnot-inc: 1\n",
      "  selfemp-nc: 2\n",
      "  Self emp notinc: 1\n",
      "fnlwgt: min:13769, mean:189793.83393011073, max:1484705, std:105651.2200888396\n",
      "education : 16\n",
      "  Bachelors: 5044\n",
      "  HS-grad: 9840\n",
      "  11th: 1048\n",
      "  Masters: 1627\n",
      "  9th: 455\n",
      "  Some-college: 6678\n",
      "  Assoc-acdm: 1008\n",
      "  7th-8th: 557\n",
      "  Doctorate: 375\n",
      "  Assoc-voc: 1307\n",
      "  Prof-school: 542\n",
      "  5th-6th: 288\n",
      "  10th: 820\n",
      "  Preschool: 45\n",
      "  12th: 377\n",
      "  1st-4th: 151\n",
      "education-num: min:1, mean:10.12131158411246, max:16, std:2.549952646857962\n",
      "marital-status : 7\n",
      "  Never-married: 9726\n",
      "  Married-civ-spouse: 14065\n",
      "  Divorced: 4214\n",
      "  Married-spouse-absent: 370\n",
      "  Separated: 939\n",
      "  Married-AF-spouse: 21\n",
      "  Widowed: 827\n",
      "occupation : 477\n",
      "  dmclrical: 1\n",
      "  Exec-managerial: 2847\n",
      "  Handlers-cleaners: 953\n",
      "  Prof-specialty: 2909\n",
      "  Execmanagerial: 303\n",
      "  Other-service: 2292\n",
      "  execmanagerial: 27\n",
      "  Adm-clerical: 2624\n",
      "  sales: 338\n",
      "  Transport-moving: 1080\n",
      "  Farming-fishing: 688\n",
      "  Machine-op-insct: 5\n",
      "  Sales: 2990\n",
      "  Profspecialty: 279\n",
      "  Otherservice: 241\n",
      "  Teh-support: 2\n",
      "  Tech-support: 654\n",
      "  Craft-repair: 2813\n",
      "  Protective-serv: 442\n",
      "  Machine-op-inspct: 1141\n",
      "  Techsupport: 77\n",
      "  adm-clerical: 294\n",
      "  handlers-cleaners: 114\n",
      "  machine-op-inspct: 146\n",
      "  Pro-specialty: 14\n",
      "  Exec-manageria: 9\n",
      "  Machineop-inspt: 3\n",
      "  Prof-speialty: 13\n",
      "  Craftrepair: 312\n",
      "  prof specialty: 31\n",
      "  profspecialty: 24\n",
      "  Admclerical: 280\n",
      "  Proective-serv: 3\n",
      "  exec-managerial: 307\n",
      "  Pof-specialty: 13\n",
      "  Craft-reair: 19\n",
      "  craft-repair: 323\n",
      "  other-service: 255\n",
      "  tech-support: 69\n",
      "  Craft repair: 256\n",
      "  Sles: 38\n",
      "  Other service: 189\n",
      "  Handlers cleaners: 80\n",
      "  Saes: 27\n",
      "  otherservice: 26\n",
      "  Machineop-inspct: 121\n",
      "  Adm-clerica: 23\n",
      "  Machine-opinspct: 123\n",
      "  Prof specialty: 227\n",
      "  Exe-managerial: 3\n",
      "  admclerical: 34\n",
      "  transport-moving: 146\n",
      "  ?: 602\n",
      "  Farmingfishing: 62\n",
      "  Machineop-inspc: 1\n",
      "  Machine-op inspct: 96\n",
      "  farming-fishing: 86\n",
      "  dm-clerical: 13\n",
      "  Transportmoving: 131\n",
      "  Transport-oving: 6\n",
      "  Exec managerial: 235\n",
      "  Protective serv: 34\n",
      "  Machine op-inspct: 96\n",
      "  Farming fishing: 65\n",
      "  Handlerscleaners: 95\n",
      "  Armed-Forces: 7\n",
      "  Sale: 30\n",
      "  Tch-support: 3\n",
      "  Craft-repir: 18\n",
      "  prof-specialty: 305\n",
      "  ales: 32\n",
      "  protective-serv: 51\n",
      "  Exec-mnagerial: 10\n",
      "  Priv-houseserv: 13\n",
      "  handlers cleaners: 9\n",
      "  machine-op-inspt: 1\n",
      "  Other-sevice: 8\n",
      "  Tech support: 47\n",
      "  Handler-cleaners: 4\n",
      "  Transport moving: 101\n",
      "  Priv-house-serv: 78\n",
      "  Am-clerical: 11\n",
      "  Craft-epair: 15\n",
      "  Craft-repai: 14\n",
      "  Adm clerical: 232\n",
      "  Othr service: 2\n",
      "  other service: 20\n",
      "  Tech-suppor: 2\n",
      "  Exec-managrial: 12\n",
      "  Farming fishin: 2\n",
      "  Oter-service: 5\n",
      "  Trnsport-moving: 2\n",
      "  Othr-service: 6\n",
      "  Adm-cerical: 17\n",
      "  Transpor-movig: 1\n",
      "  farming-fishin: 1\n",
      "  machine-op inspct: 15\n",
      "  Handlers-cleanes: 7\n",
      "  Transort-moving: 7\n",
      "  Techsuppot: 1\n",
      "  Machine-op-ispct: 3\n",
      "  exec-manageral: 6\n",
      "  macine-op-inspct: 2\n",
      "  Other-servic: 5\n",
      "  Other-servie: 11\n",
      "  Prof-specilty: 10\n",
      "  Prof-specialt: 4\n",
      "  Othe-service: 12\n",
      "  Machine-p-inspct: 4\n",
      "  Crat-epair: 1\n",
      "  Adm-clercal: 11\n",
      "  machine-opinsct: 1\n",
      "  craft-repir: 1\n",
      "  rof-specialty: 17\n",
      "  Tranportmoving: 1\n",
      "  Other-srvice: 4\n",
      "  protectiveserv: 5\n",
      "  craft-repai: 3\n",
      "  Farminfishing: 2\n",
      "  Exc-managerial: 14\n",
      "  Crat-repair: 15\n",
      "  Protectiveserv: 46\n",
      "  Admclerica: 3\n",
      "  xec-managerial: 14\n",
      "  Mahine-op inspct: 2\n",
      "  Hanlers-cleaners: 3\n",
      "  Sle: 1\n",
      "  Otherservic: 1\n",
      "  Tech-suport: 9\n",
      "  prof-specialt: 6\n",
      "  adm clerical: 14\n",
      "  Machine-op-inspt: 3\n",
      "  Exec-manageril: 9\n",
      "  Tec support: 1\n",
      "  craft-reair: 2\n",
      "  Exec-manageral: 10\n",
      "  Prf-specialty: 12\n",
      "  Farming-ihing: 1\n",
      "  transport-movin: 1\n",
      "  andlers-cleaners: 5\n",
      "  Potective-serv: 4\n",
      "  priv-house-serv: 12\n",
      "  Privhouse-serv: 3\n",
      "  Priv-house serv: 11\n",
      "  saes: 2\n",
      "  Protetiveserv: 1\n",
      "  Tranport-moving: 3\n",
      "  craft repair: 34\n",
      "  Caft-repair: 9\n",
      "  Crft-repair: 19\n",
      "  exec managerial: 25\n",
      "  machine op-inspct: 17\n",
      "  Craftrpair: 2\n",
      "  aes: 1\n",
      "  Prof-secialty: 18\n",
      "  Exec-manaerial: 10\n",
      "  techsupport: 7\n",
      "  achine-op-inspct: 5\n",
      "  machine op inspct: 4\n",
      "  Admclericl: 2\n",
      "  machine opinspct: 2\n",
      "  Prof specialt: 1\n",
      "  Ad-clerical: 8\n",
      "  oher-service: 1\n",
      "  Handers-cleaners: 4\n",
      "  Handlers-leaners: 2\n",
      "  protective serv: 6\n",
      "  Machin-op-inspct: 5\n",
      "  Other-ervice: 14\n",
      "  Priv house-serv: 7\n",
      "  sles: 4\n",
      "  Farmig-fishing: 4\n",
      "  Macine-op inspct: 1\n",
      "  Craftepair: 1\n",
      "  farmingfishing: 8\n",
      "  Farming-fshing: 2\n",
      "  Mchine op-inspct: 3\n",
      "  Sals: 29\n",
      "  Prof-spcialty: 11\n",
      "  sale: 3\n",
      "  Oher-service: 9\n",
      "  Otherervice: 1\n",
      "  pro-specialty: 1\n",
      "  machineop-inspct: 14\n",
      "  Prof-pecialty: 4\n",
      "  Adm-clrical: 11\n",
      "  priv house-serv: 2\n",
      "  craftrepair: 33\n",
      "  Tech-supprt: 1\n",
      "  farming fishing: 6\n",
      "  Adm-lerical: 10\n",
      "  Craftrepar: 2\n",
      "  Machine-o-inspct: 3\n",
      "  Exec-mangerial: 10\n",
      "  Transport-movig: 3\n",
      "  Proteciveserv: 1\n",
      "  Faring-fishing: 3\n",
      "  tech support: 3\n",
      "  prof-spcialty: 3\n",
      "  Prof-specialy: 12\n",
      "  Adm-cleical: 15\n",
      "  Machine-op-nspct: 9\n",
      "  Prof-speciaty: 10\n",
      "  adm-clerica: 1\n",
      "  Othr-servce: 1\n",
      "  crat-repair: 2\n",
      "  Ad-clerica: 1\n",
      "  ther-service: 8\n",
      "  Prof-specalty: 17\n",
      "  Exec mnagerial: 1\n",
      "  Transortmovng: 1\n",
      "  Craft-rpair: 12\n",
      "  am-clerical: 1\n",
      "  Mahine-opinspct: 1\n",
      "  Transport-mving: 1\n",
      "  Handles-cleaners: 2\n",
      "  transportmoving: 7\n",
      "  Ad clerical: 1\n",
      "  Exec-manageial: 10\n",
      "  Protctive-serv: 5\n",
      "  Crat repair: 3\n",
      "  Machineop- nspct: 8\n",
      "  Adm cleical: 2\n",
      "  profpecialty: 1\n",
      "  Protective-erv: 2\n",
      "  Craf-repair: 14\n",
      "  priv-houseserv: 1\n",
      "  Transprt-moving: 2\n",
      "  armingfishing: 1\n",
      "  Other-servce: 9\n",
      "  handlers-cleners: 2\n",
      "  raft-repair: 12\n",
      "  Transpot-moving: 3\n",
      "  Tech-upport: 2\n",
      "  other-ervice: 4\n",
      "  Exec-anagerial: 7\n",
      "  ransportmoving: 1\n",
      "  transport movng: 1\n",
      "  tch-support: 1\n",
      "  Handlrs-cleaners: 2\n",
      "  Mchine-op-inspct: 3\n",
      "  other-servce: 2\n",
      "  rof specialty: 3\n",
      "  Machine op inspct: 6\n",
      "  Handlers-cleaner: 3\n",
      "  Machineop-nspct: 12\n",
      "  Farming-fishng: 5\n",
      "  Prof pecialty: 1\n",
      "  Exec-maagerial: 10\n",
      "  Transport-movin: 3\n",
      "  Adm-clerial: 4\n",
      "  Faring fishing: 2\n",
      "  Machine opinspct: 12\n",
      "  machine-opinspct: 8\n",
      "  Farming-fishig: 3\n",
      "  transport-moing: 1\n",
      "  Adm clercal: 1\n",
      "  adm-clerial: 2\n",
      "  Handlers cleaner: 1\n",
      "  tech-suppot: 1\n",
      "  Transpor-moving: 3\n",
      "  profspeciaty: 1\n",
      "  Tech-spport: 3\n",
      "  Mahine-op-inspct: 3\n",
      "  Exemanagerial: 1\n",
      "  Profspeciaty: 1\n",
      "  Machine-op-inspc: 3\n",
      "  Prof specialy: 1\n",
      "  Handlerscleners: 1\n",
      "  Handlers-cleaers: 2\n",
      "  Eec-managerial: 5\n",
      "  Priv house serv: 2\n",
      "  Execmnagerial: 1\n",
      "  priv-house serv: 1\n",
      "  Craft-repar: 13\n",
      "  Machine-op-inpct: 4\n",
      "  ech-support: 4\n",
      "  Craft repir: 1\n",
      "  Prtective-serv: 3\n",
      "  Eec-manageral: 1\n",
      "  Farming-fising: 3\n",
      "  craft-rpair: 2\n",
      "  sals: 1\n",
      "  Prof speialty: 1\n",
      "  Macineop-inspct: 1\n",
      "  handlerscleaners: 7\n",
      "  Farmingfishng: 1\n",
      "  Pofspecialty: 1\n",
      "  Sas: 1\n",
      "  Farming-ishing: 5\n",
      "  Macine-op-inspct: 1\n",
      "  Adm lerical: 2\n",
      "  transport-oving: 2\n",
      "  machine-p-inspct: 1\n",
      "  Protectve-serv: 5\n",
      "  farming-fishng: 4\n",
      "  Tansport-moving: 4\n",
      "  Privhouse- erv: 2\n",
      "  transprt-moving: 2\n",
      "  adm-clericl: 1\n",
      "  Trasport moving: 2\n",
      "  Adm-clericl: 8\n",
      "  prof-pecialty: 1\n",
      "  Other servie: 1\n",
      "  craft-repar: 1\n",
      "  Hadlers cleaners: 1\n",
      "  rotective-serv: 2\n",
      "  Handlescleaners: 1\n",
      "  Other-srvic: 1\n",
      "  adm-clrical: 1\n",
      "  Transport movng: 1\n",
      "  Trasport-moving: 1\n",
      "  protectie-serv: 1\n",
      "  Hanlerscleaners: 1\n",
      "  Am clerical: 1\n",
      "  Protectiv-serv: 3\n",
      "  Machieop-inspct: 1\n",
      "  Execmanageria: 2\n",
      "  Tech-suppot: 3\n",
      "  Machine-op inpct: 1\n",
      "  Craftrepai: 1\n",
      "  transport moving: 7\n",
      "  other-srvice: 2\n",
      "  Machine o-inspct: 1\n",
      "  Crft-repir: 1\n",
      "  Crftrepair: 1\n",
      "  Handlers-cleanrs: 4\n",
      "  Priv-huse-serv: 2\n",
      "  Profspecalty: 1\n",
      "  Machne-op inspct: 1\n",
      "  Exec maagerial: 1\n",
      "  farmin fishing: 1\n",
      "  macine opinspct: 1\n",
      "  craftrpair: 1\n",
      "  exec-mnagerial: 1\n",
      "  Hndlers-cleaners: 2\n",
      "  pof specialty: 1\n",
      "  adm-lerical: 1\n",
      "  exec-manageria: 2\n",
      "  exec-manaerial: 1\n",
      "  Prf specialty: 2\n",
      "  Machie-op-inspct: 2\n",
      "  ArmedForces: 1\n",
      "  xecmanagerial: 1\n",
      "  Other-serice: 12\n",
      "  ransport moving: 1\n",
      "  Protective-sev: 2\n",
      "  Transport-movng: 5\n",
      "  Tech suport: 1\n",
      "  machineop- nspct: 1\n",
      "  Mahine op-inspct: 1\n",
      "  Adm clerial: 2\n",
      "  Frming-fishing: 3\n",
      "  handlers-claners: 1\n",
      "  Execmanageral: 1\n",
      "  Transpormoving: 1\n",
      "  Protective-ser: 1\n",
      "  Mchine-op inspct: 2\n",
      "  Priv-house-ser: 1\n",
      "  Machine op-nspct: 1\n",
      "  Craf repair: 2\n",
      "  Caft-repai: 1\n",
      "  ther service: 1\n",
      "  Te-support: 1\n",
      "  Mchineop-inspct: 1\n",
      "  Profspecilty: 2\n",
      "  Priv-house-erv: 1\n",
      "  Transport moing: 1\n",
      "  Handlers-cleners: 2\n",
      "  privhouse-serv: 1\n",
      "  Machne-op-inspct: 2\n",
      "  Priv houseserv: 1\n",
      "  Handlers-claners: 2\n",
      "  Protecive-serv: 1\n",
      "  Machine-op nspct: 1\n",
      "  Machie-opinspct: 1\n",
      "  Farmingfishin: 1\n",
      "  Protective-srv: 1\n",
      "  Admlerical: 1\n",
      "  Profspecialy: 2\n",
      "  Handlers-ceaners: 1\n",
      "  Tansport moving: 1\n",
      "  machineop-insct: 1\n",
      "  adm-clercal: 2\n",
      "  Protetive-serv: 1\n",
      "  Farmng-fishing: 1\n",
      "  Farmingfihing: 1\n",
      "  Craftrepir: 2\n",
      "  adm-cleical: 1\n",
      "  exe managerial: 1\n",
      "  Transport-moing: 2\n",
      "  arming-fishing: 2\n",
      "  execmaagerial: 1\n",
      "  Cat-repair: 1\n",
      "  Other servce: 1\n",
      "  Execmanageril: 1\n",
      "  Handlersleaners: 1\n",
      "  Crft repair: 1\n",
      "  Farmng fishing: 1\n",
      "  Prospecialty: 1\n",
      "  tech-upport: 1\n",
      "  trnsport-moving: 1\n",
      "  adm-lercal: 1\n",
      "  exc-managerial: 1\n",
      "  Transport oving: 1\n",
      "  Hanlers cleaners: 2\n",
      "  exec manageril: 1\n",
      "  Other srvice: 1\n",
      "  transport-movng: 1\n",
      "  Exec anagerial: 1\n",
      "  Execanagerial: 1\n",
      "  machine-op-inspc: 1\n",
      "  farmng-fishing: 1\n",
      "  Otherserice: 3\n",
      "  exe-managerial: 1\n",
      "  Handles-cleanes: 1\n",
      "  Priv-houe serv: 1\n",
      "  exec-managrial: 1\n",
      "  other-servic: 1\n",
      "  tansport-moving: 1\n",
      "  therservice: 2\n",
      "  andlers cleaners: 1\n",
      "  Priv-hose-serv: 1\n",
      "  protective-ser: 1\n",
      "  Protectie-serv: 1\n",
      "  faming-fishing: 1\n",
      "  Machine-op inspc: 1\n",
      "  pr-specialty: 1\n",
      "  Ad-cerical: 1\n",
      "  tansportmoving: 1\n",
      "  Machine op-insct: 2\n",
      "  protective-srv: 1\n",
      "  Farming-fihing: 1\n",
      "  prf-specialty: 1\n",
      "  frming-fishing: 1\n",
      "  adm-cleial: 1\n",
      "  prof-specalty: 1\n",
      "  Admcleical: 2\n",
      "  Prof secialty: 1\n",
      "  Other sevice: 1\n",
      "  mchine-op-inspct: 1\n",
      "  Handles cleaners: 1\n",
      "  Faming-fishing: 1\n",
      "  Eec-manageial: 1\n",
      "  Cft-repair: 1\n",
      "  Ad-clrical: 1\n",
      "  xec managerial: 1\n",
      "  admlerical: 1\n",
      "  other-sevice: 1\n",
      "  hanlers-cleaners: 1\n",
      "  Priv-housserv: 1\n",
      "  Hadlers-cleaners: 1\n",
      "  Craft rpair: 1\n",
      "  Machineop-inpct: 1\n",
      "  craft rpair: 1\n",
      "  exec-manageril: 1\n",
      "  ale: 1\n",
      "  transpor-moving: 1\n",
      "  handlers-ceners: 1\n",
      "  Caft repair: 1\n",
      "  hadlers-cleaners: 1\n",
      "  Machinep-inspct: 1\n",
      "  Execmanageial: 1\n",
      "  Execmanaerial: 2\n",
      "  transport-movig: 1\n",
      "  trnsportmoving: 1\n",
      "  exec-anagerial: 1\n",
      "  Prof speciaty: 1\n",
      "  transort-moving: 1\n",
      "  handlers-leaners: 1\n",
      "  Tranport moving: 1\n",
      "  Transport-ovng: 1\n",
      "  ad-clerical: 1\n",
      "  Am-clerica: 1\n",
      "  crat-reair: 1\n",
      "  Execmangerial: 1\n",
      "  Armed Forces: 1\n",
      "relationship : 6\n",
      "  Not-in-family: 7726\n",
      "  Husband: 12463\n",
      "  Wife: 1406\n",
      "  Own-child: 4466\n",
      "  Unmarried: 3212\n",
      "  Other-relative: 889\n",
      "race : 5\n",
      "  White: 25933\n",
      "  Black: 2817\n",
      "  Asian-Pac-Islander: 895\n",
      "  Amer-Indian-Eskimo: 286\n",
      "  Other: 231\n",
      "sex : 2\n",
      "  Male: 20380\n",
      "  Female: 9782\n",
      "capital-gain: min:0, mean:1092.0078575691268, max:99999, std:7406.223719547088\n",
      "capital-loss: min:0, mean:88.37248856176646, max:4356, std:404.2916683159674\n",
      "hours-per-week: min:1, mean:40.93123798156621, max:99, std:11.979785633630952\n",
      "native-country : 41\n",
      "  United-States: 27504\n",
      "  Cuba: 92\n",
      "  Jamaica: 80\n",
      "  India: 100\n",
      "  Mexico: 610\n",
      "  Puerto-Rico: 109\n",
      "  Honduras: 12\n",
      "  England: 86\n",
      "  Canada: 107\n",
      "  Germany: 128\n",
      "  Iran: 42\n",
      "  Philippines: 188\n",
      "  Poland: 56\n",
      "  Columbia: 56\n",
      "  Cambodia: 18\n",
      "  Thailand: 17\n",
      "  Ecuador: 27\n",
      "  Laos: 17\n",
      "  Taiwan: 42\n",
      "  Haiti: 42\n",
      "  Portugal: 34\n",
      "  Dominican-Republic: 67\n",
      "  El-Salvador: 100\n",
      "  France: 27\n",
      "  Guatemala: 63\n",
      "  Italy: 68\n",
      "  China: 68\n",
      "  South: 71\n",
      "  Japan: 59\n",
      "  Yugoslavia: 16\n",
      "  Peru: 30\n",
      "  Outlying-US(Guam-USVI-etc): 14\n",
      "  Scotland: 11\n",
      "  Trinadad&Tobago: 18\n",
      "  Greece: 29\n",
      "  Nicaragua: 33\n",
      "  Vietnam: 64\n",
      "  Hong: 19\n",
      "  Ireland: 24\n",
      "  Hungary: 13\n",
      "  Holand-Netherlands: 1\n",
      "salary : 2\n",
      "  <=50K: 22654\n",
      "  >50K: 7508\n"
     ]
    }
   ],
   "source": [
    "# better way to print\n",
    "print(\"rows: {}\".format(len(data.index)))\n",
    "i = 0\n",
    "while i < len(data.columns):\n",
    "    if(type(data.loc[0][i]) == np.int64):\n",
    "        print(\"{n}: min:{min}, mean:{mean}, max:{max}, std:{std}\".format(n=data.columns[i],min=np.min(data.iloc[:,i]),mean=np.mean(data.iloc[:,i]),max=np.max(data.iloc[:,i]),std=np.std(data.iloc[:,i])))\n",
    "\n",
    "    else:\n",
    "        print(\"{n} : {count}\".format(n=data.columns[i],count=data.iloc[:,i].nunique()))\n",
    "        # refer to https://stackoverflow.com/questions/34178751/extract-unique-values-and-number-of-occurrences-of-each-value-from-dataframe-col\n",
    "        uni_list = Counter(data.iloc[:,i])\n",
    "        for uni in uni_list:\n",
    "            print(\"  {}: {}\".format(uni,uni_list[uni]))\n",
    "        \n",
    "    i = i+1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Int64Index: 28958 entries, 0 to 30161\n",
      "Data columns (total 15 columns):\n",
      "age               28958 non-null int64\n",
      "workclass         28958 non-null object\n",
      "fnlwgt            28958 non-null int64\n",
      "education         28958 non-null object\n",
      "education-num     28958 non-null int64\n",
      "marital-status    28958 non-null object\n",
      "occupation        28958 non-null object\n",
      "relationship      28958 non-null object\n",
      "race              28958 non-null object\n",
      "sex               28958 non-null object\n",
      "capital-gain      28958 non-null int64\n",
      "capital-loss      28958 non-null int64\n",
      "hours-per-week    28958 non-null int64\n",
      "native-country    28958 non-null object\n",
      "salary            28958 non-null object\n",
      "dtypes: int64(6), object(9)\n",
      "memory usage: 3.5+ MB\n"
     ]
    }
   ],
   "source": [
    "# delete the row with the value ?\n",
    "data_clean1 = data[data['workclass'] != '?']\n",
    "data_clean2 = data_clean1[data_clean1['occupation'] != '?']\n",
    "data_clean2.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "36    1647\n",
       "31     793\n",
       "34     792\n",
       "35     786\n",
       "33     783\n",
       "37     772\n",
       "30     765\n",
       "23     758\n",
       "28     746\n",
       "38     745\n",
       "25     739\n",
       "27     733\n",
       "29     731\n",
       "39     724\n",
       "40     724\n",
       "32     721\n",
       "41     717\n",
       "24     705\n",
       "42     702\n",
       "43     696\n",
       "26     687\n",
       "46     667\n",
       "44     662\n",
       "45     656\n",
       "47     632\n",
       "22     626\n",
       "21     583\n",
       "20     577\n",
       "19     553\n",
       "51     533\n",
       "      ... \n",
       "17     304\n",
       "60     256\n",
       "61     240\n",
       "62     200\n",
       "63     176\n",
       "64     162\n",
       "65     129\n",
       "67     102\n",
       "66      98\n",
       "68      84\n",
       "69      73\n",
       "70      58\n",
       "71      46\n",
       "73      43\n",
       "72      37\n",
       "74      37\n",
       "90      34\n",
       "75      31\n",
       "76      27\n",
       "77      20\n",
       "80      15\n",
       "79      15\n",
       "78      13\n",
       "81      12\n",
       "84       8\n",
       "82       6\n",
       "83       5\n",
       "85       3\n",
       "88       2\n",
       "86       1\n",
       "Name: age, Length: 72, dtype: int64"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\"\"\"     the column age has bad data\n",
    "        change the value which less than 0 to the mean value of the dataset\n",
    "\"\"\"\n",
    "data_clean2['age'].values[data_clean2['age'].values <=0] = np.mean(data_clean2['age'])\n",
    "data_clean2['age'].value_counts()  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['Private', 'Self-emp-not-inc', 'Self-emp-inc', 'Federal-gov', 'Local-gov', 'State-gov', 'Without-pay', 'Never-worked ']\n"
     ]
    }
   ],
   "source": [
    "workclass = \"Private, Self-emp-not-inc, Self-emp-inc, Federal-gov, Local-gov, State-gov, Without-pay, Never-worked \".split(', ')\n",
    "print(workclass)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'State gov': 'State-gov',\n",
       " 'Self-emp-not-inc': 'Self-emp-not-inc',\n",
       " 'Private': 'Private',\n",
       " 'private': 'Private',\n",
       " 'Federal-gov': 'Federal-gov',\n",
       " 'Local-gov': 'Local-gov',\n",
       " 'stategov': 'State-gov',\n",
       " 'federalgov': 'Federal-gov',\n",
       " 'State-gov': 'State-gov',\n",
       " 'Self-emp-inc': 'Self-emp-inc',\n",
       " 'Self-emp inc': 'Self-emp-inc',\n",
       " 'Self emp-not-inc': 'Self-emp-not-inc',\n",
       " 'local-gov': 'Local-gov',\n",
       " 'Selfemp-not-inc': 'Self-emp-not-inc',\n",
       " 'state-gov': 'State-gov',\n",
       " 'local gov': 'Local-gov',\n",
       " 'Self-empinc': 'Self-emp-inc',\n",
       " 'Self emp-inc': 'Self-emp-inc',\n",
       " 'Self-emp-not inc': 'Self-emp-not-inc',\n",
       " 'Self-emp-notinc': 'Self-emp-not-inc',\n",
       " 'Self-emp not-inc': 'Self-emp-not-inc',\n",
       " 'Localgov': 'Local-gov',\n",
       " 'Federalgov': 'Federal-gov',\n",
       " 'self-empinc': 'Self-emp-inc',\n",
       " 'Selfemp-nc': 'Self-emp-inc',\n",
       " 'self-emp not-inc': 'Self-emp-not-inc',\n",
       " 'self-emp-inc': 'Self-emp-inc',\n",
       " 'Self emp-notinc': 'Self-emp-not-inc',\n",
       " 'self-emp-not-inc': 'Self-emp-not-inc',\n",
       " 'self emp-inc': 'Self-emp-inc',\n",
       " 'Self-empnot-nc': 'Self-emp-not-inc',\n",
       " 'self-emp inc': 'Self-emp-inc',\n",
       " 'Self-empnot- nc': 'Self-emp-not-inc',\n",
       " 'Self-emp not inc': 'Self-emp-not-inc',\n",
       " 'Local gov': 'Local-gov',\n",
       " 'Stategov': 'State-gov',\n",
       " 'Self-empnot-inc': 'Self-emp-not-inc',\n",
       " 'Selfemp-not- nc': 'Self-emp-not-inc',\n",
       " 'self empinc': 'Self-emp-inc',\n",
       " 'Self emp inc': 'Self-emp-inc',\n",
       " 'Federal gov': 'Federal-gov',\n",
       " 'Selfemp- ot-inc': 'Self-emp-not-inc',\n",
       " 'Self emp-not inc': 'Self-emp-not-inc',\n",
       " 'federal-gov': 'Federal-gov',\n",
       " 'Selfemp-not-nc': 'Self-emp-not-inc',\n",
       " 'self-empnot-inc': 'Self-emp-not-inc',\n",
       " 'selfemp-not-inc': 'Self-emp-not-inc',\n",
       " 'selfemp-inc': 'Self-emp-inc',\n",
       " 'self-emp-notinc': 'Self-emp-not-inc',\n",
       " 'Without-pay': 'Without-pay',\n",
       " 'Selfemp-inc': 'Self-emp-inc',\n",
       " 'Self emp not inc': 'Self-emp-not-inc',\n",
       " 'self-emp-not inc': 'Self-emp-not-inc',\n",
       " 'Self emp not-inc': 'Self-emp-not-inc',\n",
       " 'localgov': 'Local-gov',\n",
       " 'selfemp-ot-inc': 'Self-emp-not-inc',\n",
       " 'Self empnot-inc': 'Self-emp-not-inc',\n",
       " 'Self-emp notinc': 'Self-emp-not-inc',\n",
       " 'self emp-not-inc': 'Self-emp-not-inc',\n",
       " 'federal gov': 'Federal-gov',\n",
       " 'self-empnot-nc': 'Self-emp-not-inc',\n",
       " 'Self empinc': 'Self-emp-inc',\n",
       " 'state gov': 'State-gov',\n",
       " 'Selfemp- nc': 'Self-emp-inc',\n",
       " 'selfemp-not- nc': 'Self-emp-not-inc',\n",
       " 'selfemp-not-nc': 'Self-emp-not-inc',\n",
       " 'Selfemp-ot-inc': 'Self-emp-not-inc',\n",
       " 'without pay': 'Without-pay',\n",
       " 'Selfemp- ot- nc': 'Self-emp-not-inc',\n",
       " 'self-emp not inc': 'Self-emp-not-inc',\n",
       " 'selfemp- ot-inc': 'Self-emp-not-inc',\n",
       " 'Without pay': 'Without-pay',\n",
       " 'Self empnot- nc': 'Self-emp-not-inc',\n",
       " 'self empnot-inc': 'Self-emp-not-inc',\n",
       " 'selfemp-nc': 'Self-emp-inc',\n",
       " 'Self emp notinc': 'Self-emp-not-inc'}"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#clean the bad data for column workclass\n",
    "#use the previous unique values to match the right one\n",
    "work_list = data_clean2['workclass'].unique().tolist()\n",
    "#print(len(work_list))\n",
    "i=0\n",
    "work_dict = {}\n",
    "#print(len(work_list))\n",
    "while i < len(work_list) :\n",
    "    j = 0\n",
    "    s = workclass[j]\n",
    "    k = 0\n",
    "    while j < len(workclass)-1:\n",
    "   \n",
    "        #print(Levenshtein.ratio(s,str))\n",
    "        #print(Levenshtein.ratio(workclass[j+1],str))\n",
    "        #print('++++')\n",
    "        #print(list[i])\n",
    "        if Levenshtein.ratio(workclass[j+1],work_list[i])>Levenshtein.ratio(s,work_list[i]):\n",
    "            s =  workclass[j+1]\n",
    "            #print(s)\n",
    "            #print('------------')\n",
    "            #print(s)\n",
    "        j = j+1\n",
    "   \n",
    "    #print(list[i])\n",
    "    #print(s)\n",
    "    work_dict[work_list[i]] = s\n",
    "    #print(i)\n",
    "    i = i+1\n",
    "\n",
    "work_dict"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\lanch\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:3: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
      "  This is separate from the ipykernel package so we can avoid doing imports until\n"
     ]
    }
   ],
   "source": [
    "def match(x,dict):\n",
    "    return dict[x]\n",
    "data_clean2['workclass']=data_clean2['workclass'].apply(lambda x: match(x,work_dict))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['State-gov', 'Self-emp-not-inc', 'Private', 'Federal-gov',\n",
       "       'Local-gov', 'Self-emp-inc', 'Without-pay'], dtype=object)"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_clean2['workclass'].unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "472\n",
      "472\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\lanch\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:32: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n"
     ]
    }
   ],
   "source": [
    "#clean bad data for column occupation\n",
    "occupationclass =\"Tech-support, Craft-repair, Other-service, Sales, Exec-managerial, Prof-specialty, Handlers-cleaners, Machine-op-inspct, Adm-clerical, Farming-fishing, Transport-moving, Priv-house-serv, Protective-serv, Armed-Forces\".split()\n",
    "occupationlist = data_clean2['occupation'].unique().tolist()\n",
    "print(len(occupationlist))\n",
    "i=0\n",
    "occupation_dict = {}\n",
    "#print(len(list))\n",
    "while i < len(occupationlist) :\n",
    "    j = 0\n",
    "    s = occupationclass[j]\n",
    "    k = 0\n",
    "    while j < len(occupationclass)-1:\n",
    "   \n",
    "        #print(Levenshtein.ratio(s,str))\n",
    "        #print(Levenshtein.ratio(workclass[j+1],str))\n",
    "        #print('++++')\n",
    "        #print(list[i])\n",
    "        if Levenshtein.ratio(occupationclass[j+1],occupationlist[i])>Levenshtein.ratio(s,occupationlist[i]):\n",
    "            s =  occupationclass[j+1]\n",
    "            #print(s)\n",
    "            #print('------------')\n",
    "            #print(s)\n",
    "        j = j+1\n",
    "   \n",
    "    #print(list[i])\n",
    "    #print(s)\n",
    "    occupation_dict[occupationlist[i]] = s\n",
    "    #print(i)\n",
    "    i = i+1\n",
    "\n",
    "print(len(occupation_dict))\n",
    "data_clean2['occupation']=data_clean2['occupation'].apply(lambda x: match(x,occupation_dict))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['Adm-clerical,', 'Exec-managerial,', 'Handlers-cleaners,',\n",
       "       'Prof-specialty,', 'Other-service,', 'Sales,', 'Transport-moving,',\n",
       "       'Farming-fishing,', 'Machine-op-inspct,', 'Tech-support,',\n",
       "       'Craft-repair,', 'Protective-serv,', 'Armed-Forces',\n",
       "       'Priv-house-serv,'], dtype=object)"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_clean2['occupation'].unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "data_clean2.to_csv('dataset1_processed.csv',index=False,header=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'Age Histogram')"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAm4AAAFNCAYAAAC5eOMWAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAH5tJREFUeJzt3X+0XGV97/H3xyQoqLegBAIhx6CNClr5YUQs1hqsIFwr2IrC9SrXqvQPvOptb1t09V61ltt6l1WrtbS0UNGKiIo1tfgj0lTrXUsgIAIBKREoCT9CFAURiwG/9495jgzJycmAmTOzM+/XWrNm72fvmf2dveZMPnme/SNVhSRJksbfo0ZdgCRJkgZjcJMkSeoIg5skSVJHGNwkSZI6wuAmSZLUEQY3SZKkjjC4SVKfJF9IcvKo65CkmRjcJI2FJP+S5PtJHj3kbbxhi7YXJtkwPV9Vx1TVOQO8VyX5xWHUKUnbYnCTNHJJlgK/AhTwspEWMwaSzB91DZLGk8FN0jh4LfAN4CPAQ4YpkzwxyT8muTvJpUn+OMnX+5Y/PcmqJHcmuS7JK3+eQvp75ZL8YpKvJrkryXeTfLK1f62t/q0k9yR5VWt/Y5J1rZaVSfbte9+jWn13JfnL9r7T2/lvSf5fkvcnuRN4Z5KnJPnnJN9r2/54kt373u+mJL+X5MokP0pyVpK921DvD5N8JckeP8++kDR+DG6SxsFrgY+3x9FJ9u5b9mHgR8AieqHuZ8EuyWOBVcC5wF7AScBfJnnGDqrr3cCXgT2A/YAPAVTVC9ryg6rqcVX1ySRHAn8CvBLYB/h34LxW557Ap4G3AU8ErgN+eYttPRe4oX2O04G099sXOABYArxzi9f8JvBi4KnArwNfAN4O7Env9/3NP+fnlzRmDG6SRirJ84EnAedX1WXAd4D/0pbNoxdO3lFV91bVNUD/8WcvBW6qqr+rqvur6nLgM8ArZtnkB5P8YPoBfH6WdTe32vatqv+oqq/Psu6rgbOr6vKquo9eSHteGwY+FlhbVRdU1f3AB4Hbt3j9rVX1ofY5flxV66pqVVXdV1WbgPcBv7rFaz5UVRur6hbgX4GLq+qbbfufBQ6ZpV5JHWRwkzRqJwNfrqrvtvlzebBXbSEwH1jft37/9JOA524RxF5Nr3duW95cVbtPP+iFv235fXo9X5ckWZvkt2ZZd196vWwAVNU9wPeAxW3Z+r5lBWzY4vX9n4skeyU5L8ktSe4G/p5eT1q/jX3TP55h/nGz1CupgzwAVtLIJNmV3tDivCTTPVCPBnZPchBwNXA/vWHKf2vLl/S9xXrgq1X14mHUV1W3A29stT4f+EqSr1XVuhlWv5VekKSt/1h6w6K3ALfR+wzTy9I/P725Leb/pLU9q6q+l+R44C9+vk8kqevscZM0SscDDwAHAge3xwH0hv1eW1UPABfQO1h/tyRPp3c83LTPA09N8pokC9rjOUkO2BHFJTkhyXTA+j69IPVAm98IPLlv9XOB1yU5uF3S5P/QG7q8Cfgn4JeSHN/OGD2V2XsFAR4P3AP8IMli4Pd2xGeS1G0GN0mjdDLwd1V1c1XdPv2g17P06hZy3gT8Ar1jwj4GfAK4D6CqfggcBZxIr8frduA99HrtdoTnABcnuQdYCbylqm5sy94JnNOGaF9ZVRcB/4veMXa3AU9pddGGgU8A/i+94dMDgTXTn2Mb3gUcCtxFL/hdsIM+k6QOS+9QC0nqhiTvARZVVWfvbpDkUfSOcXt1Va0edT2SusMeN0ljrV2n7VnpOQx4Pb0zJjslydFJdm/DqG+nd9LDN0ZclqSO8eQESePu8fSGR/cF7gD+DPjcSCt6ZJ5H7zi4XYBrgOOr6sejLUlS1zhUKkmS1BEOlUqSJHWEwU2SJKkjdspj3Pbcc89aunTpqMuQJEnarssuu+y7VbVwkHV3yuC2dOlS1qxZM+oyJEmStivJv29/rR6HSiVJkjrC4CZJktQRBjdJkqSOMLhJkiR1hMFNkiSpIwxukiRJHWFwkyRJ6giDmyRJUkcY3CRJkjrC4CZJktQRBjdJkqSOMLhJj8CiqSmSDPWxaGpq1B9TkjRmdsqbzEvDtnH9eli9erjbWLFiqO8vSeoee9wkSZI6wuAmSZLUEQY3SZKkjjC4SZIkdYTBTZIkqSMMbtqpzMVlOpKM+mNKkiaUlwPRTmUuLtMBgJfqkCSNgD1ukiRJHTG04JbkMUkuSfKtJGuTvKu175/k4iTXJ/lkkl1a+6Pb/Lq2fGnfe72ttV+X5Ohh1azhmothTEmSdmbDHCq9Dziyqu5JsgD4epIvAL8DvL+qzkvyV8DrgTPa8/er6heTnAi8B3hVkgOBE4FnAPsCX0ny1Kp6YIi1awjmZBjTIUxJ0k5saD1u1XNPm13QHgUcCXy6tZ8DHN+mj2vztOUvSq8L5TjgvKq6r6puBNYBhw2rbkmSpHE11GPcksxLcgVwB7AK+A7wg6q6v62yAVjcphcD6wHa8ruAJ/a3z/Ca/m2dkmRNkjWbNm0axseRJEkaqaEGt6p6oKoOBvaj10t2wEyrteeZDlCqWdq33NaZVbW8qpYvXLjwkZYsSZI0tubkrNKq+gHwL8DhwO5Jpo+t2w+4tU1vAJYAtOW/ANzZ3z7DayRJkibGMM8qXZhk9za9K/BrwLXAauAVbbWTgc+16ZVtnrb8n6uqWvuJ7azT/YFlwCXDqluSJGlcDfOs0n2Ac5LMoxcQz6+qzye5BjgvyR8D3wTOauufBXwsyTp6PW0nAlTV2iTnA9cA9wOnekapJEmaREMLblV1JXDIDO03MMNZoVX1H8AJ23iv04HTd3SNkiRJXeKdEyRJkjrC4CZJktQRBjdJkqSOMLhJkiR1hMFNkiSpIwxu0rhasIAkQ30smpoa9aeUJD0Mw7yOm6Sfx+bNsHr1UDexccWKob6/JGnHssdNkiSpIwxukiRJHWFwkyRJ6giDmyRJUkcY3CRJkjrC4CZJktQRBjdJkqSOMLhJkiR1hMFNkiSpIwxukiRJHWFwkyRJ6giDmyRJUkcY3CRJkjrC4CZNsgULSDL0x6KpqVF/UknaKcwfdQGa3aKpKTauXz/07ey9ZAm333zz0LejMbN5M6xePfTNbFyxYujbkKRJYHAbcxvXr/cfVkmSBDhUKkmS1BkGN0mSpI4wuEmSJHWEwU2SJKkjDG6SJEkdYXCTJEnqCIObJElSRxjcJEmSOmJowS3JkiSrk1ybZG2St7T2dya5JckV7XFs32velmRdkuuSHN3X/pLWti7JacOqWZIkaZwN884J9wO/W1WXJ3k8cFmSVW3Z+6vqvf0rJzkQOBF4BrAv8JUkT22LPwy8GNgAXJpkZVVdM8TaJUmSxs7QgltV3Qbc1qZ/mORaYPEsLzkOOK+q7gNuTLIOOKwtW1dVNwAkOa+ta3CTJEkTZU6OcUuyFDgEuLg1vSnJlUnOTrJHa1sM9N9NfUNr21a7JEnSRBl6cEvyOOAzwFur6m7gDOApwMH0euT+bHrVGV5es7RvuZ1TkqxJsmbTpk07pHZJkqRxMtTglmQBvdD28aq6AKCqNlbVA1X1U+BveHA4dAOwpO/l+wG3ztL+EFV1ZlUtr6rlCxcu3PEfRpIkacSGeVZpgLOAa6vqfX3t+/St9nLg6ja9EjgxyaOT7A8sAy4BLgWWJdk/yS70TmBYOay6JUmSxtUwzyo9AngNcFWSK1rb24GTkhxMb7jzJuC3AapqbZLz6Z10cD9walU9AJDkTcCXgHnA2VW1doh1S5IkjaVhnlX6dWY+Pu3CWV5zOnD6DO0XzvY6SZKkSeCdEyRJkjrC4CZJktQRBjdJkqSOMLhJkiR1hMFNkiSpIwxukiRJHWFwkyRJ6giDmyRJUkcY3CRJkjrC4CZJktQRBjdJkqSOMLhJkiR1hMFNkiSpIwxukiRJHWFwkyRJ6giDmyRJUkcY3CRJkjrC4CZJktQRBjdJkqSOMLhJkiR1hMFNkiSpIwxukiRJHWFwkyRJ6oj5oy5AY2LBApKMugpJkjQLg5t6Nm+G1auHu40VK4b7/pIk7eQcKpUkSeoIg5skSVJHGNwkSZI6wuAmSZLUEQY3SZKkjjC4SZIkdYTBTZIkqSOGFtySLEmyOsm1SdYmeUtrf0KSVUmub897tPYk+WCSdUmuTHJo33ud3Na/PsnJw6pZkiRpnA2zx+1+4Her6gDgcODUJAcCpwEXVdUy4KI2D3AMsKw9TgHOgF7QA94BPBc4DHjHdNiTJEmaJEMLblV1W1Vd3qZ/CFwLLAaOA85pq50DHN+mjwM+Wj3fAHZPsg9wNLCqqu6squ8Dq4CXDKtuSZKkcTUnx7glWQocAlwM7F1Vt0Ev3AF7tdUWA+v7XrahtW2rXZIkaaIMPbgleRzwGeCtVXX3bKvO0FaztG+5nVOSrEmyZtOmTY+sWEmSpDE21OCWZAG90PbxqrqgNW9sQ6C05zta+wZgSd/L9wNunaX9IarqzKpaXlXLFy5cuGM/iCRJ0hgY5lmlAc4Crq2q9/UtWglMnxl6MvC5vvbXtrNLDwfuakOpXwKOSrJHOynhqNYmSZI0UeYPslKSZ1bV1Q/zvY8AXgNcleSK1vZ24E+B85O8HrgZOKEtuxA4FlgH3Au8DqCq7kzybuDStt4fVdWdD7MWSZKkzhsouAF/lWQX4CPAuVX1g+29oKq+zszHpwG8aIb1Czh1G+91NnD2gLVKkiTtlAYaKq2q5wOvpnes2Zok5yZ58VArkyRJ0kMMfIxbVV0P/CHwB8CvAh9M8u0kvzGs4iRJkvSggYJbkmcleT+9i+geCfx6uyPCkcD7h1ifJEmSmkF73P4CuBw4qKpO7bsjwq30euEkaaQWTU2RZKiPRVNTo/6YkibcoCcnHAv8uKoeAEjyKOAxVXVvVX1saNVJ0oA2rl8Pq1cPdxsrVgz1/SVpewbtcfsKsGvf/G6tTZIkSXNk0OD2mKq6Z3qmTe82nJIkSZI0k0GD24+SHDo9k+TZwI+HU1J3zMUxNZIkSdMGPcbtrcCnkkzfI3Qf4FXDKak75uKYGjymRpIkNQMFt6q6NMnTgafRuxvCt6tq81ArkyRJ0kMM2uMG8BxgaXvNIUmoqo8OpSpJkiRtZdCbzH8MeApwBfBAay7A4CZJkjRHBu1xWw4c2G4EL0mSpBEY9KzSq4FFwyxEkiRJsxu0x21P4JoklwD3TTdW1cuGUpUkSZK2Mmhwe+cwi5AkSdL2DXo5kK8meRKwrKq+kmQ3YN5wS5MkSVK/gY5xS/JG4NPAX7emxcA/DKsoSZIkbW3QkxNOBY4A7gaoquuBvYZVlCRJkrY2aHC7r6p+Mj2TZD6967hJkiRpjgwa3L6a5O3ArkleDHwK+MfhlSVJkqQtDRrcTgM2AVcBvw1cCPzhsIqSJEnS1gY9q/SnwN+0hyRJkkZg0HuV3sgMx7RV1ZN3eEWSJEma0cO5V+m0xwAnAE/Y8eVIkiRpWwY6xq2qvtf3uKWqPgAcOeTaJEmS1GfQodJD+2YfRa8H7vFDqUjSzmfBApKMugpJ6rxBh0r/rG/6fuAm4JU7vBpJO6fNm2H16uFuY8WK4b6/JI2BQc8q9RdRkiRpxAYdKv2d2ZZX1ft2TDmSJEnalodzVulzgJVt/teBrwHrh1GUJEmStjZocNsTOLSqfgiQ5J3Ap6rqDcMqTJIkSQ816C2vpoCf9M3/BFg62wuSnJ3kjiRX97W9M8ktSa5oj2P7lr0tybok1yU5uq/9Ja1tXZLTBqxXkiRppzNoj9vHgEuSfJbeHRReDnx0O6/5CPAXM6z3/qp6b39DkgOBE4FnAPsCX0ny1Lb4w8CLgQ3ApUlWVtU1A9YtSZK00xj0rNLTk3wB+JXW9Lqq+uZ2XvO1JEsHrOM44Lyqug+4Mck64LC2bF1V3QCQ5Ly2rsFNkiRNnEGHSgF2A+6uqj8HNiTZ/xFu801JrmxDqXu0tsU89ESHDa1tW+2SJEkTZ6DgluQdwB8Ab2tNC4C/fwTbOwN4CnAwcBsPXth3pkuq1yztM9V4SpI1SdZs2rTpEZQmSZI03gbtcXs58DLgRwBVdSuP4JZXVbWxqh6oqp8Cf8ODw6EbgCV9q+4H3DpL+0zvfWZVLa+q5QsXLny4pUmSJI29QYPbT6qqaL1dSR77SDaWZJ++2ZcD02ecrgROTPLoNgS7DLgEuBRYlmT/JLvQO4FhJZIkSRNo0LNKz0/y18DuSd4I/Ba9HrNtSvIJ4IXAnkk2AO8AXpjkYHoB8CbgtwGqam2S8+mddHA/cGpVPdDe503Al4B5wNlVtfZhfUJJkqSdxKBnlb43yYuBu4GnAf+7qlZt5zUnzdB81izrnw6cPkP7hcCFg9QpSZK0M9tucEsyD/hSVf0aMGtYkyRJ0vBs9xi3NmR5b5JfmIN6JEmStA2DHuP2H8BVSVbRziwFqKo3D6UqSZIkbWXQ4PZP7SFJkqQRmTW4JZmqqpur6py5KkiSJEkz294xbv8wPZHkM0OuRZIkSbPYXnDrv+XUk4dZiCSNvQULSDL0x6KpqVF/UkljanvHuNU2piVp8mzeDKtXD30zG1esGPo2JHXT9oLbQUnuptfztmubps1XVf2noVYnSZKkn5k1uFXVvLkqRJIkSbMb9CbzkiRJGjGDmyRJUkcY3CRJkjrC4CZJktQRBjdJkqSOMLhJkiR1hMFNkiSpIwxukiRJHWFwkyRJ6giDmyRJUkcY3CRJkjrC4CZJktQRBjdJkqSOMLhJkiR1hMFNkiSpIwxukiRJHWFwkyRJ6giDmyRJUkcY3CRJkjrC4CZJktQRBjdJkqSOMLhJkiR1xNCCW5Kzk9yR5Oq+tickWZXk+va8R2tPkg8mWZfkyiSH9r3m5Lb+9UlOHla9kiRJ426YPW4fAV6yRdtpwEVVtQy4qM0DHAMsa49TgDOgF/SAdwDPBQ4D3jEd9iRJkibN0IJbVX0NuHOL5uOAc9r0OcDxfe0frZ5vALsn2Qc4GlhVVXdW1feBVWwdBiVJkibCXB/jtndV3QbQnvdq7YuB9X3rbWht22qXJEmaOONyckJmaKtZ2rd+g+SUJGuSrNm0adMOLU6SJGkczHVw29iGQGnPd7T2DcCSvvX2A26dpX0rVXVmVS2vquULFy7c4YVLkiSN2lwHt5XA9JmhJwOf62t/bTu79HDgrjaU+iXgqCR7tJMSjmptkiRJE2f+sN44ySeAFwJ7JtlA7+zQPwXOT/J64GbghLb6hcCxwDrgXuB1AFV1Z5J3A5e29f6oqrY84UGSJGkiDC24VdVJ21j0ohnWLeDUbbzP2cDZO7A0SZKkThqXkxMkSZK0HQY3SZKkjjC4SZIkdYTBTZIkqSMMbpIkSR1hcJOkcbNgAUmG+lg0NTXqTynpERja5UAkSY/Q5s2wevVQN7FxxYqhvr+k4bDHTZIkqSMMbpIkSR1hcJMkSeoIg5skSVJHGNwkSZI6wuAmSZLUEQY3SZpEc3CtOK8XJ+14XsdNkibRHFwrDrxenLSj2eMmSZLUEQY3SZKkjjC4SZIkdYTBTZIkqSMMbpIkSR1hcJMkSeoIg5skSVJHGNwkSZI6wuAmSZLUEQY3SZKkjjC4SZIkdYTBTZIkqSMMbpIkSR1hcJMkSeoIg5skSVJHGNwkSZI6wuAmSZLUESMJbkluSnJVkiuSrGltT0iyKsn17XmP1p4kH0yyLsmVSQ4dRc2SJEmjNsoetxVVdXBVLW/zpwEXVdUy4KI2D3AMsKw9TgHOmPNKJUmSxsA4DZUeB5zTps8Bju9r/2j1fAPYPck+oyhQkiRplEYV3Ar4cpLLkpzS2vauqtsA2vNerX0xsL7vtRtamyRJ0kSZP6LtHlFVtybZC1iV5NuzrJsZ2mqrlXoB8BSAqampHVOlJEnSGBlJj1tV3dqe7wA+CxwGbJweAm3Pd7TVNwBL+l6+H3DrDO95ZlUtr6rlCxcuHGb5kiRJIzHnwS3JY5M8fnoaOAq4GlgJnNxWOxn4XJteCby2nV16OHDX9JCqJEnSJBnFUOnewGeTTG//3Kr6YpJLgfOTvB64GTihrX8hcCywDrgXeN3clyxJkjR6cx7cquoG4KAZ2r8HvGiG9gJOnYPSJEmSxto4XQ5EkiRJszC4SZIkdYTBTZI0PAsWkGSoj0VeAkoTZFTXcZMkTYLNm2H16qFuYuOKFUN9f2mc2OMmSZLUEQY3SZKkjjC4SZIkdYTBTZIkqSMMbpIkSR1hcJMkSeoIg5skSVJHGNwkSZI6wuAmSZLUEQY3SZKkjjC4SZIkdYTBTZIkqSMMbpIkSR1hcJMkSeoIg5skSVJHGNwkSZI6wuAmSZLUEQY3SVK3LVhAkqE+Fk1NjfpTSgDMH3UBkiT9XDZvhtWrh7qJjStWDPX9pUHZ4yZJktQRBjdJkrZnDoZjHZLVIBwqlSRpe+ZgOBYcktX22eMmSZLUEQY3SZKkjjC4SZIkdYTBTZIkqSMMbpIkjQsvJqzt8KxSSZLGhRcT1nZ0psctyUuSXJdkXZLTRl2PJEnSXOtEcEsyD/gwcAxwIHBSkgNHW5UkSR20Ew3HLpqa2mk+y6C6MlR6GLCuqm4ASHIecBxwzUirkiSpa+ZiOPaoo0gy1G38zIQNLXcluC0G1vfNbwCeO6JaJEnSbOboThOMWaiaC6mqUdewXUlOAI6uqje0+dcAh1XVf+9b5xTglDb7NOC6OS90x9gT+O6oixgz7pOZuV+25j6Zmftla+6TmblftjYX++RJVbVwkBW70uO2AVjSN78fcGv/ClV1JnDmXBY1DEnWVNXyUdcxTtwnM3O/bM19MjP3y9bcJzNzv2xt3PZJJ05OAC4FliXZP8kuwInAyhHXJEmSNKc60eNWVfcneRPwJWAecHZVrR1xWZIkSXOqE8ENoKouBC4cdR1zoPPDvUPgPpmZ+2Vr7pOZuV+25j6Zmftla2O1TzpxcoIkSZK6c4ybJEnSxDO4jUiSJUlWJ7k2ydokb2ntT0iyKsn17XmPUdc6l5I8JsklSb7V9su7Wvv+SS5u++WT7SSViZJkXpJvJvl8m3efJDcluSrJFUnWtLZJ/xvaPcmnk3y7/b48z32Sp7XvyPTj7iRvdb/kf7Tf2auTfKL9/k7070qSt7T9sTbJW1vbWH1PDG6jcz/wu1V1AHA4cGp6t/E6DbioqpYBF7X5SXIfcGRVHQQcDLwkyeHAe4D3t/3yfeD1I6xxVN4CXNs37z7pWVFVB/edrj/pf0N/Dnyxqp4OHETvOzPR+6SqrmvfkYOBZwP3Ap9lgvdLksXAm4HlVfVMeif+ncgE/64keSbwRnp3azoIeGmSZYzZ98TgNiJVdVtVXd6mf0jvx3UxvVt5ndNWOwc4fjQVjkb13NNmF7RHAUcCn27tE7dfkuwH/Gfgb9t8mPB9MouJ/RtK8p+AFwBnAVTVT6rqB0zwPpnBi4DvVNW/436ZD+yaZD6wG3Abk/27cgDwjaq6t6ruB74KvJwx+54Y3MZAkqXAIcDFwN5VdRv0wh2w1+gqG402JHgFcAewCvgO8IP2hwS9CzIvHlV9I/IB4PeBn7b5J+I+gV6o/3KSy9rdU2Cy/4aeDGwC/q4Nq/9tkscy2ftkSycCn2jTE7tfquoW4L3AzfQC213AZUz278rVwAuSPDHJbsCx9C7+P1bfE4PbiCV5HPAZ4K1Vdfeo6xkHVfVAG9LYj16X9QEzrTa3VY1OkpcCd1TVZf3NM6w6MfukzxFVdShwDL3DDV4w6oJGbD5wKHBGVR0C/IgJGv7bnna81suAT426llFrx2kdB+wP7As8lt7f0ZYm5nelqq6lN1S8Cvgi8C16hzWNFYPbCCVZQC+0fbyqLmjNG5Ps05bvQ6/XaSK1IZ5/oXcM4O6tOx9muOXZTu4I4GVJbgLOozeU8QEme58AUFW3tuc76B2zdBiT/Te0AdhQVRe3+U/TC3KTvE/6HQNcXlUb2/wk75dfA26sqk1VtRm4APhlJvx3parOqqpDq+oFwJ3A9YzZ98TgNiLtGKWzgGur6n19i1YCJ7fpk4HPzXVto5RkYZLd2/Su9H5crgVWA69oq03Ufqmqt1XVflW1lN4wzz9X1auZ4H0CkOSxSR4/PQ0cRW+oY2L/hqrqdmB9kqe1phcB1zDB+2QLJ/HgMClM9n65GTg8yW7t36Pp78qk/67s1Z6ngN+g930Zq++JF+AdkSTPB/4VuIoHj1t6O73j3M4Hpuj9YZ1QVXeOpMgRSPIsegd/zqP3H4vzq+qPkjyZXm/TE4BvAv+1qu4bXaWjkeSFwP+sqpdO+j5pn/+zbXY+cG5VnZ7kiUz239DB9E5i2QW4AXgd7W+JCd0nAO2YpfXAk6vqrtY26d+VdwGvojcc+E3gDfSOaZvk35V/pXcM8Wbgd6rqonH7nhjcJEmSOsKhUkmSpI4wuEmSJHWEwU2SJKkjDG6SJEkdYXCTJEnqCIObJPVJ8vIkleTpo65FkrZkcJOkhzoJ+Dq9ix1L0lgxuElS0+4dfATwelpwS/KoJH+ZZG2Szye5MMkr2rJnJ/lqu8n9l6ZviyNJw2Jwk6QHHQ98sar+DbgzyaH0bnuzFPgleleWfx787F7DHwJeUVXPBs4GTh9F0ZImx/ztryJJE+Mk4ANt+rw2vwD4VFX9FLg9yeq2/GnAM4FVvVs9Mg+4bW7LlTRpDG6SxM/uW3kk8MwkRS+IFQ/eD3WrlwBrq+p5c1SiJDlUKknNK4CPVtWTqmppVS0BbgS+C/xmO9Ztb+CFbf3rgIVJfjZ0muQZoyhc0uQwuElSz0ls3bv2GWBfYANwNfDXwMXAXVX1E3ph7z1JvgVcAfzy3JUraRKlqkZdgySNtSSPq6p72nDqJcARVXX7qOuSNHk8xk2Stu/zSXYHdgHebWiTNCr2uEmSJHWEx7hJkiR1hMFNkiSpIwxukiRJHWFwkyRJ6giDmyRJUkcY3CRJkjri/wP5Gu7sr2yUXgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 720x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot histogram for column age\n",
    "# refer to https://matplotlib.org/gallery/statistics/histogram_features.html\n",
    "fig, ax = plt.subplots(figsize=(10,5))\n",
    "N, bins, patches =ax.hist(data_clean2['age'],20,color='c',histtype='bar',ec='black')\n",
    "ax.set_xlabel('Age')\n",
    "ax.set_ylabel('Frequency')\n",
    "ax.set_title(\"Age Histogram\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "workclass\n",
       "Federal-gov           906\n",
       "Local-gov            1983\n",
       "Private             21396\n",
       "Self-emp-inc         1034\n",
       "Self-emp-not-inc     2404\n",
       "State-gov            1222\n",
       "Without-pay            13\n",
       "Name: age, dtype: int64"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_clean2.groupby('workclass').count()['age']\n",
    "    \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot histogram for column workclass\n",
    "fig, ax = plt.subplots(figsize=(10,5))\n",
    "data_clean2['workclass'].value_counts().plot.bar(color='y',ec='black')\n",
    "ax.set_xlabel('Workclass')\n",
    "ax.set_ylabel('Frequency')\n",
    "ax.set_title(\"Workclass Histogram\")\n",
    "# refer to https://stackoverflow.com/questions/11264521/date-ticks-and-rotation-in-matplotlib\n",
    "ax.xaxis.set_tick_params(rotation=45)\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
